/**********************************************************************************************************
** 程序文件：	SHA1.h
** 程序版本：	2.0
** 开发环境：	RealView MDK-ARM 5.17
** 作者:		盖书永
** 生成日期:	2015年12月6日16:08:42
** 文件功能：	安全哈希算法（Secure Hash Algorithm）主要适用于数字签名标准里面定义的数字签名算法.
**********************************************************************************************************/
#ifndef SHA1_H
#define SHA1_H
 
typedef struct {
	unsigned int	h0,h1,h2,h3,h4;
	unsigned int	nblocks;
	unsigned char	buf[64];
	int				count;
} SHA1_CTX;			//SHA1上下文结构体对象
                                         
/**********************************************************************************************************
* 函数名称： void SHA1_Init(SHA1_CTX *ctx)
* 函数说明： SHA1初始化
* 输入参数： 结构体指针
* 返回参数： 无
**********************************************************************************************************/
void SHA1_Init(SHA1_CTX *hd);

/**********************************************************************************************************
* 函数名称： void SHA1_Update(SHA1_CTX *hd,unsigned char *input,unsigned int inputlen)
* 函数说明： 数据进行SHA1处理
* 输入参数： 结构体指针，输入数据缓存指针，输入数据长度
* 返回参数： 无
**********************************************************************************************************/
void SHA1_Update(SHA1_CTX *hd, unsigned char *input, unsigned int inputlen);

/**********************************************************************************************************
* 函数名称： void SHA1_Final(SHA1_CTX *hd,unsigned char *digest)
* 函数说明： SHA1 输出结果，最后调用
* 输入参数： 结构体指针，SHA1摘要值（需要20字节缓存区进行值得缓存）
* 返回参数： 无
**********************************************************************************************************/
void SHA1_Final(SHA1_CTX *hd,unsigned char *digest);

/**********************************************************************************************************
* 函数名称： void SHA1_Digest(void *input, unsigned int inputlen, void *digest)
* 函数说明： 数据进行SHA1信息摘要处理，（适用于固定数据块进行信息摘要）
* 输入参数： 输入数据缓存指针，输入数据长度，SHA1摘要值（需要20字节缓存区进行值得缓存）
* 返回参数： 无
**********************************************************************************************************/
void SHA1_Digest(void *input, unsigned int inputlen, void *digest);
 
#endif
